perm filename MSS.F4[NEW,LCS]32 blob
sn#435735 filedate 1979-04-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 C ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
C00030 00003 33 IF(X22.EQ.0)GO TO 6333
C00045 00004 60 J2=R2
C00060 ENDMK
C⊗;
C ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
C *** READS DATA FROM CLEFA-B-C-ETC., BDR40,BDI40, ETC.
IMPLICIT INTEGER(A-Q,S-Z)
REAL DIS,DISX,A,B,STFF,CENTR,POS ,UD,XDIS
DIMENSION LST(18),DP(0/7)
COMMON /DL/X22,SAVER,NAME,EXT,IOLD /RRJJ/RJJ2,RJJ(20),JJA
1 /FONT/JFONT /RINP/R(10,80),RPOS(2,50),RI(200)
1 /RMOD/RMODE2,RSET4,IBEAM,
1 NOSET,STEM,STUP,NTC,ENDP,RAD,RDD,ITB,POSB
1 /FRMT/F78F(1),FA1(1),FA5(1),ASK /SIZ/RSZ,JCEN,KCEN
C ORDER OF COMMON MUST! REMAIN AS IS (FOR DMP MODE READ)
COMMON /LIMIT/LIMIT,ITEM,L,I,IX,ITEMX,ILIM
1 /STF/RSTFAC(0/7),RSTJ2
1 /POSI/STFF(0/7),JJ2,POS /ALF/INP(72),ML
1 /SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
1 /UPDWN/ RL,UD /IDEV/IDEV /NUM/NUM(10),JRD
1 /PLTR/PLT,RHT,DIS,XDIS /PTR/PWDS(350)
CC COMMON /PLTR/PLT,RHT,DIS,XDIS/PTR/PWDS(250),ITEM,L,I,IX
COMMON/A2Z/LAA,LBB,LCC,LDD,LEE,LFF,LGG,LHH,LII,LJJ,LKK,LEL,
1 LMM,LNN,LOH,LPP,LQQ,LRR,LSS,LTT,LUU,LVV,LWW,LXX,LYY,LZZ
1 /JCHAR/IXX,ISEMI,IBLA,IG,JED,KED,REDIT,RITEM
COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /RNW/RNW /MKS/MKS(14)
1 /XRN/RN(3000) /DPY/ST(4000),MEDIT,IGO /DPTR/WDS(350)
1 /MKX/MKX(11) /SC/SSC(72) /YED/YED,IBOX,RBOX
CC COMMON/XRN/RN(2500)/DPY/ST(4000),WDS(250),MEDIT,IGO
EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3)),
1 (R6,RJQ(4)),(J10,JQ(8)),(J6,JQ(4)),(R4,RJQ(2)),(R7,RJQ(5))
1,(R3,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(I3,INP(3)),(RJ13,RJJ(11))
1,(R11,RJQ(9)),(NJR,R10,RJQ(8)),(R8,RJQ(6)),(RJ3,RJJ(1)),(R9,
1 RJQ(7)),(RX3,RJQ(20)),(ST2,ST(2)),(R13,RJQ(11)),(J8,JQ(6))
1 ,(J13,JQ(11)),(IPOS,POS),(LST(13),K),(LST(14),X),(LST(15),J)
1 ,(I7,INP(7)),(IM,MKS(5)),(IP,MKS(11)),(IR,MKS(13)),(IU,MKS(8)),
1 (IC,MKS(12)),(IA,MKS(2)),(IFF,MKS(3)),(IT,MKS(6)),(IOO,MKS(14)),
1 (IS,MKS(4)),(ID,MKS(7)),(II,MKS(10)),(IW,MKS(1)),(IH,MKS(9))
1 ,(MINUS,MKX(10)),(LESS,MKX(3)),(IGT,MKX(4)),(RJ7,RJJ(5))
DATA NUM/'0','1','2','3','4','5','6','7','8','9'/,JRD/0/,ILIM/350/
1 ,STFF/-469.,-346.,-223.,-100.,23.,146.,269.,392./,RSTFAC/8*1./
1 ,LST/'NOTE','REST','CLEF','LINE','SLUR','BEAM','TRILL','STAFF',
1 'MISC','NUMB','LIBRY','CIRCL',0,0,0,'WORD','KSIG','METER'/,
1DP/8*1/,IE/'E'/,IJ/'J'/,RNW/2.44/,IL/'L'/,INN/'N'/,LCNT/1/,LIMIT
1/3000/,IQ/'Q'/,IZ/'Z'/,IB/'B'/, DIS/1.0/, RHT/1.0/,EXT/'DMD'/
DATA MKS/'W','A','F','S','M','T','D','U','H','I','P','C','R','O'/
C THE GIANT NUMBERS ARE FOR [ AND ]
DATA MKX/'/',';','<','>',-19728949184,-18655207360,'(',')','.'
1,'-','*'/,SSC(14)/'X'/,SSC(15)/';'/,SSC(72)/' '/
C LIMIT IS MAIN ARRAY LENGTH (3000)
C 350 LIM. ON ITEMS PWDS, WDS (SEE ALSO 571 TO 170)
C***** CALL SEGFIX
C FOR UPPER SEGMENTS USED BY MORE THAN 1 JOB (SEGFIX.FAI[TVR])
LCEN=0
MCEN=0
IDEV=5
I1=0
2 CALL DPYSET(1,ST,4000)
CALL HYDPOG(2)
CALL HYDPOG(1)
CALL TYPLOC(450,0)
CALL DPYBRT(5)
DO 299 K=1,I
CLEARS ARRAY FOR RESTART OF 'SETUP' ROUTINE
299 RN(K)=0
JFONT=0
CHNG=0
C flag for edit changes (=-1 means a change has been made.)
IOLD=0
C IOLD HOLDS LAST ITEM NUM. EDITED.
IX=0
RSET4=999
QUICK=0
CB=0
C CB IS CENTER-BIG (CENTERING RANGE=6)
UD=1
RL=1
FSCN=LEL
RPOS(1,1)=0
RSZ=.845
X22=0
JCEN=0
KCEN=0
PLT=0
PWDS(1)=1
EDQ=-1
RN(2)=0
C FOR RESTART. AVOIDS STAFF CODE NUM.
SAVER=4
DO 1402 K=0,7
1402 RSTFAC(K)=1.
REDIT=999.
M=1
ITEM=0
ITEMX=0
ZERO=-1
WDS(1)=4
C DATA IN DPY ARRAY STARTS AT WD.4!
I=1
1100 SCORE=-1
58 IGO=-1
IF(I1.NE.IR)GO TO 5505
I1=-1
CALL NAMEXT(INP,NAME,EXT)
J2=0
IF(NAME.NE.IBLA)GO TO 1221
C YOU CAN TYPE 'RS NAME' FOR QUICK RESTARTS
GO TO 5505
11 CALL NOTWRT
57 IF(M.GT.I)GO TO 571
IF(IGO)CALL DPYOUT(1)
CC IF(IGO)CALL DPYDO(1)
571 ITEM=ITEM+1
IF(ITEM.LT.ILIM)GO TO 17
CALL TYPSTR('**** TOO MANY ITEMS')
CALL TYPINT(ITEM)
CALL TYPSTR('/349')
CALL TYPCRLF
CCCC TYPE 170,ITEM
I=PWDS(ILIM)
ITEM=ILIM-1
ST2=WDS(ILIM)
CALL DPYOUT(1)
CC CALL DPYDO(1)
GO TO 1100
CCC170 FORMAT(2(' **** TOO MANY ITEMS ',I3,'/299'/))
17 IF(IGO.GT.0)GO TO 20000
K=ST2
IF(X22.EQ.0)GO TO 20000
CALL BOX(IBOX,RBOX)
ST2=K
20000 WDS(ITEM+1)=ST2
IF(EDQ.EQ.-1)GO TO 1571
IF(M.LT.I)GO TO 6120
C SL=SAVE AFTER RESETTING LENGTH OF PAGE. (SEE I2 IN SCX)
1571 PWDS(ITEM+1)=I
PLT=0
IF(IGO.NE.0)GO TO 55
CALL DPYOUT(1)
CC CALL DPYDO(1)
IF(SCORE.EQ.0)GO TO 9532
C GO GET MORE FROM SCX.
IGO=-1
55 IF(SCORE.EQ.0)GO TO 653
5505 SVST=ST2
C CATCHES TYPO WITH 'C'
K=ITEM+1
IF(X22.EQ.0)GO TO 5503
C 'N' SUPPRESSES TYPE-OUT, 'P' OR NEW ITEM RESTORES IT.
IF(QUICK)5911,210,10
C -1=QUICK MODE, +1=SUPPRESS TYPE-OUT OF PARAMS
210 L=RN(MEDIT+1)
K=X22
IF(IDEV.EQ.1)GO TO 5503
C 'FILE'CAN BE USED WHILE IN EDIT MODE
CC IF(L.EQ.11.OR.L.EQ.12)L=9
CC IF(L.EQ.13)L=11
CC IF(L.GE.15)L=L-5
CCCC TYPE 427,LST(L),(RN(L),L=MEDIT+1,MEDIT+3)
CALL TYPCRLF
CALL TYPWRD(LST(L))
CALL TYPCRLF
CALL TYPFLT(RN(MEDIT+1))
CALL TYPCHR(' ',3)
CALL TYPFLT(RN(MEDIT+2))
CALL TYPCHR(' ',3)
CALL TYPFLT(RN(MEDIT+3))
CCCCC TYPE 1427,(RN(L),L=MEDIT+1,MEDIT+3)
IF(YED.LT.2)GO TO 59
C YED IS SET AT 426
DO 5501 L=4,YED+2
CALL TYPCHR(' (',4)
CALL TYPINT(L)
CALL TYPCHR(') ',2)
5501 CALL TYPFLT(RN(MEDIT+L))
CALL TYPCRLF
CCC5501 TYPE 4271,L,RN(MEDIT+L)
GO TO 59
CCCC5919 FORMAT(' ;=LFT :=RT (=UP )=DN /=HALF *=*2'/)
591 IF(X22.EQ.0)GO TO 59
QUICK=-1
CALL TYPSTR(';=LFT :=RT (=UP )=DN /=HALF *=*2')
CALL TYPCRLF
CCCC TYPE 5919
5911 CALL FSCAN
C FNUM.FAI=FAST COMMANDS ;=← :=→ (=↑ )=↓ /=HALF *=*2 X=X C=C OTHERS=CR
GO TO 1591
GO TO 2591
GO TO 3591
GO TO 4591
GO TO 5913
GO TO 6591
GO TO 7591
GO TO 5912
I1=0
5591 QUICK=0
GO TO 5917
1502 FORMAT(2A5)
502 REREAD 1502,K,K
CALL LO2UP(K)
C CHANGES LOWER CASE TO UPPER CASE
IF(LOOK(K)+LOOKD(K))GO TO 2502
CALL TYPSTR(' FILE NOT FOUND')
GO TO 59
2502 CALL IFILE(1,K)
2503 IDEV=1
GO TO 10
CC IF(I1.NE.LOH)GO TO 10
3502 IDEV=5
GO TO 59
C RESET TO TTY MODE
5503 CALL HYDPOG(3)
C TO DELETE VERTICAL LINE (55)
KED=0
QUICK=0
C RESET PARAM TYPE-OUT
RJ13=0
C KILL CENTERING FEATURE FOR NOW
CC** NEXT DOES THIS FASTER*** 59 TYPE 56,NAME,K,I,SVST
59 IF(IDEV.EQ.1)GO TO 10
CALL TYPCRLF
IF(X22.EQ.0)GO TO 1101
CALL TYPSTR('**** EDIT ITEM #')
CALL TYPINT(K)
GO TO 2101
1101 CALL TYPWRD(NAME)
CALL TYPSTR(' TYPE FOR ITEM #')
CALL TYPINT(K)
CALL TYPSTR(' ')
CALL TYPINT(I)
CALL TYPSTR(' ')
CALL TYPINT(SVST)
2101 CALL TYPCRLF
10 SCORE=-1
CQQ ACCEPT 89,INP
READ(IDEV,89,END=3502)INP
CALL LULOOP
IF(I1.EQ.LESS)GO TO 3502
C '<' = TEMPORARY ESCAPE FROM 'FILE' MODE
IF(I1.NE.IGT)GO TO 1000
IF(X22.NE.0)GO TO 59
C '>' = RETURN TO 'FILE' MODE - IF NOT STILL EDITING.
GO TO 2503
1000 IF(IDEV.EQ.5)GO TO 4502
IF(I7.NE.IT)GO TO 4502
IF(I1.NE.LCC)GO TO 4502
C 'ET' DIRECTORY? UGH!!!
6502 READ(IDEV,89)INP
IF(I3.NE.ISEMI)GO TO 6502
READ(IDEV,89)INP
C READ AGAIN TO GET PAGE MARK - OR SOMETHING???
GO TO 10
4502 REREAD 1,J,R2,RJQ
C ↑↑↑ 1/78
C ↓↓↓↓ FIRST CATCHES BLANKS, NUMBERS, ETC.
5917 IF(I1.GE.MINUS)GO TO 110
IF(I1.EQ.IBLA)GO TO 110
IF(I1.EQ.II)GO TO 678
C IN, ITEM
IF(I1.EQ.IXX)GO TO 78
C X=EXIT
IF(I1.EQ.LEL)GO TO 778
C L=LEFT, LP=LIGHT PEN
IF(I1.EQ.IU)GO TO 883
C UP
IF(I1.EQ.IR)GO TO 8835
C R=RIGHT, RI=RIT, READ, RS=RESTART
IF(I1.EQ.LDD)GO TO 478
C D=DOWN, DI=DIM, DE=DELETE
IF(I1.EQ.LCC)GO TO 178
C C=COPY, CR=CRESC., CN=CENTER, CB=CENTER BIG, CH=ON HEAD, CT=ON TAIL
IF(I1.EQ.IS)GO TO 15
C SAVE, SPACING STAFF, STAFF, SHOW, SF, SFZ, SCALE, STC=STACCATO
IF(I1.EQ.LEE)GO TO 878
C ED=EDIT WITH POS. FIRST, E=EDIT WITH LIGHT PEN, ES=EDIT WITH STAFF NUM. FIRST
IF(I1.EQ.INN)GO TO 410
C N=NO TYPE
IF(I1.EQ.IP)GO TO 33
C P,PP,PPP, P N=PRINT PARAM N., PR=PRINT PARAM LIST, POCO, PIU, PZ=PIZZ,PL=PLUS
IF(I1.EQ.LAA)GO TO 378
C A=ADJUST TO SET, AD=ADJUST STEMS, AC=ACCEL, AR=ARCO, AT=A TEMPO, ACT=ACCENT
IF(I1.EQ.IQ)GO TO 591
C Q=QUICK
IF(I1.EQ.IT)GO TO 441
C T=TYPE TEXT, T=TYPE OUT, TE=TENUTO, TL=TYPLOC
IF(I1.EQ.LFF)GO TO 2442
C F,FF,FFF,FE=FERMATA,FILE(TO READ COMMAND FILE)
IF(X22.NE.0)GO TO 59
C NEXT CANNOT HAPPEN IN EDIT MODE.
IF(I1.EQ.IZ)GO TO 24
C ZOOM
IF(I1.EQ.IM)GO TO 7555
C M=MOVE, ME=MENO, MO=MOLTO, MF,MP
IF(I1.EQ.IJ)GO TO 7555
C JUSTIFY
IF(I1.EQ.LGG)GO TO 120
C GET, GM=GET MORE
IF(I1.EQ.LHH)GO TO 1678
C H=HARMONIC, HW=HEAVY WEDGE
IF(I1.EQ.IW)GO TO 1778
C W=WEDGE ACCENT
IF(I1.EQ.'(')GO TO 7378
IF(I1.EQ.')')GO TO 7478
IF(I1.EQ.',')GO TO 7778
C LEFT AND RIGHT PARENTHESES AND COMMA
IF(I1.NE.LBB)GO TO 59
C******* ADD MORE LETTER ITEMS HERE *************
C BRC=BRACE, BRK=BRACKET -- FOR FRONT OF LINE. BAR=BAR LINE.
IF(X22.NE.0)GO TO 59
REREAD 1,JA,JA,JA,R2,RJQ
J=4
R7=5
IF(I3.NE.LCC)R7=4
IF(I3.EQ.IR)R7=0
GO TO 110
378 IF(I2.EQ.LDD)GO TO 887
C 'A' = ALTER(GO TO 112) ADJUST(GO TO 886) ACCEL(GO TO 7813)
C ALIGN=GO TO 886
IF(X22.NE.0)GO TO 886
IF(I2.EQ.IT)GO TO 7178
C AT=A TEMPO
IF(I2.EQ.IR)GO TO 7278
C AR=ARCO
IF(I2.NE.LCC)GO TO 112
IF(I3.EQ.IT)GO TO 1278
C ACT=ACCENT. NEXT FOR AC (=ACCEL.)
RD=80
GO TO 1442
478 IF(I2.GE.IBLA)GO TO 883
C 'D' DIM →578, DOWN →883, DELETE →112 OR 883 DP →886
IF(I2.NE.LEE)GO TO 578
IF(X22.NE.0)GO TO 883
GO TO 112
578 IF(I2.EQ.IP)GO TO 887
IF(I2.NE.II)GO TO 59
C NEXT FOR DIM.=82
IF(X22.NE.0)GO TO 59
RD=82
GO TO 1442
1591 I1=LEL
9591 FSCN=I1
GO TO 5917
2591 I1=IR
GO TO 9591
3591 I1=IU
GO TO 9591
4591 I1=LDD
GO TO 9591
7591 I1=IXX
GO TO 5591
5912 I1=LCC
GO TO 5591
5913 I1=FSCN
IF(FSCN.EQ.LEL)GO TO 5914
IF(FSCN.EQ.IR)GO TO 5914
C NEXT FOR UP-DOWN
UD=UD/2
GO TO 5917
5914 RL=RL/2
GO TO 5917
6591 I1=FSCN
IF(I1.EQ.LEL)GO TO 5916
IF(I1.EQ.IR)GO TO 5916
UD=UD*2
GO TO 5917
5916 RL=RL*2
GO TO 5917
C 'S'=SET, SA=SAVE, SB=SAVE BIG, SM=BIG+SAME NAME, ST=STAFF, SP=SPC STF.
C SC=SPACING SCALE ABOVE STAFF n (99=DELETE IT)
15 IF(I2.EQ.IT)GO TO 885
IF(I2.EQ.LAA)GO TO 3121
IF(I2.EQ.LCC)GO TO 886
IF(I2.EQ.LDD)GO TO 3121
IF(I2.EQ.LEE)GO TO 312
IF(I2.EQ.IBLA)GO TO 312
IF(I2.EQ.IP)GO TO 87
IF(I2.EQ.LHH)JFONT=1
IF(I3.EQ.IXX)JFONT=0
IF(I3.EQ.IP)JFONT=-1
IF(I3.EQ.LOH)JFONT=-2
IF(I3.EQ.II)JFONT=-3
C 'SH'(=SHOW) IS SAME AS 44 1. SHOWS TYPE FONTS ON DPY.
C 'SHP' = SHOW ONLY AS 'PRIMITIVE' FONT, 'SHX' = CANCEL FONTS ON DPY.
C 'SHO' = FONT SET (TEMPORARILY) TO 'BDR'; 'SHI' = 'BDI' (ITALICS)
IF(I2.NE.LFF)GO TO 3122
RD=45
IF(I3.NE.IZ)GO TO 1442
RD=92
3123 REREAD 1,JA,JA,JA,R2,RJQ
R5=RD
GO TO 442
3122 IF(I2.NE.IM)GO TO 5505
C ONLY FOR ST, SA, SB, SM, RS, S, SF=45, SFZ=92
3121 IF(X22.NE.0)GO TO 5505
SAVER=4
CALL SAVIT
GO TO 5505
312 JA=55
R2=RN(MEDIT+3)
C POSITION OF ITEM LOOKED AT.
R3=55.
GO TO 6531
C ABOVE FOR 'S'ET ALIGNMENT
C 'S'=SET ALIGNMENT, 'A'=ALIGN IT. 'M'=MOVER 'C'= COPIER
C 'E'=EDIT; 'I'=ITEM; 'G'=GET; 'GM'=GET MORE;
878 K=-1
DO 882 JA=3,10
882 IF(INP(JA).NE.IBLA)GO TO 887
GO TO 883
885 FORMAT(A2,21F)
CC IF(X22.NE.0)GO TO 59
IF(I3.EQ.LCC)GO TO 1578
C STC=STACCATO
887 IF(CHNG.NE.0)GO TO 5505
C CAN'T DO 'ST' AND OTHER THINGS AFTER CHANGES IN EDIT MODE.
886 REREAD 885,K,R2,RJQ
JA=55
IF(I2.NE.LCC)GO TO 101
CALL SCL
GO TO 5505
101 IF(I2.NE.LDD)GO TO 988
IF(I1.EQ.LAA)JA=190
C 'AD'just stems to beams.
988 IF(I2.EQ.IT)JA=44
IF(I2.EQ.INN)GO TO 188
IF(I2.NE.IP)GO TO 6531
IF(R2.GT.7)GO TO 1886
C GO BACK AND RESET ALL IF STF NUM >7
K=R2
JA=0
C USE '8' FOR STAFF 0.
888 IF(K.EQ.8)K=0
DP(K)=-DP(K)
JA=JA+1
K=RJQ(JA)
IF(K.EQ.0)GO TO 55
C JUMP OUT IF RJQ(JA)=0 OR 99
IF(K.EQ.99)GO TO 85
C*** 3/74 END WITH '99' TO MAKE DP RIGHT NOW!
GO TO 888
1886 DO 2886 K=0,7
2886 DP(K)=1
GO TO 85
C TO GET BACK OTHERS - 'DPY N' AGAIN WILL DO.
778 IF(I2.NE.IP)GO TO 883
C 'LP'=LIGHT PEN. TO BE USED ONLY IN EDIT MODE
78 IF(X22.EQ.0)GO TO 59
C 'X' GO BACK IF NOT IN EDIT MODE
C NEXT FOR READ, RS, DEL, L,R,U,D
883 IF(IX.EQ.I)GO TO 8834
C CAN'T DELETE ('DE') AFTER A PARAM HAS BEEN CHANGED. START OVER.
IF(I2.NE.LEE)GO TO 8831
GO TO 5505
8835 IF(I2.GE.IBLA)GO TO 8831
C R=RIGHT MOVE, RI=RIT., RS=RESTART, READ=READ
IF(X22.NE.0)GO TO 59
C GO BACK IF STILL IN EDIT MODE.
IF(I2.EQ.IS)GO TO 2
C TYPE 'RS' TO RESTART.
IF(I2.NE.II)GO TO 8830
C NEXT FOR RIT.=37
RD=37
GO TO 1442
8830 JA=144
C 'READ' IS SAME AS 144
GO TO 88
8834 IF(I1.EQ.LCC)GO TO 72
8831 IF(JA.NE.16)GO TO 8832
IF(X22.EQ.0)GO TO 5505
C CAN'T MOVE LETTERS OR 'SCORE' ENTRIES UNLESS REALLY IN EDIT MODE!
8832 CALL EDIT(JJA)
IF(JA.NE.99)GO TO 6531
CALL DELETE
C DELETE ROUTINE COULD BE PUT DIRECTLY IN HERE.
GO TO 425
89 FORMAT(72A1)
C TYPE L, R, U OR D OR EDIT TO MOVE LAST ENTERED ITEM.
410 IF(QUICK.NE.0)GO TO 510
C ↑↑↑ SO 'N n' WILL WORK EVEN AFTER N HAS BEEN SET.
QUICK=1
C TYPE 'N' =NO-TYPE PARAMS TO SUPPRESS TYPE-OUT WHILE EDITING.
IF(X22.NE.0)GO TO 87
510 I1=II
C 'N n' WHEN NOT IN EDIT MODE = 'I n'<CR>,'N'<CR>
87 IF(I1.NE.II)GO TO 610
678 IF(I2.EQ.INN)GO TO 887
C 'IN n,n,n,' MUST BE READ AGAIN AT 886 TO GET n'S CORRECTLY.
JA=223
C JA=223 FOR EDIT MODE
IF(CHNG.NE.0)GO TO 5505
C AFTER A CHANGE OF AN ITEM, 'I', ETC. IS ILLEGAL.
GO TO 6531
610 IF(K)JA=55
C ED 47 -1 = 55 47 -1, ETC.
IF(JA.EQ.101)GO TO 101
IF(I1.NE.INN)GO TO 710
IF(R2.NE.0)GO TO 510
C IF NO NUM FOLLOWS 'N' GO PRINT OUT CURRENT PARAMS.
GO TO 10
C 'Z' = ZOOM (OLD CODE# 24)
710 IF(I2.NE.IP)GO TO 441
RSET4=R3
C SPn SETS "SETUP" STAFF NUMBER
GO TO 5505
C 'SP' IS SAME AS 444
C 'P n' = PRINT CURRENT CONTENTS OF PARAM n. (ONLY WHILE IN EDIT MODE.)
441 IF(X22.EQ.0.OR.I2.EQ.LEL)GO TO 288
C JUMP OUT IF 'TL' (TYPLOC)
QUICK=0
C TYPE 'T' TO RESET PARAM TYPE-OUT
IF(R2.EQ.0)GO TO 5505
GO TO 510
1078 RD=14
C PLUS
1178 REREAD 885,JA,R2,RJQ
1378 IF(X22.NE.0)GO TO 5505
C CAN'T ENTER NEW ITEM WHILE IN EDIT MODE.
J=9
R5=RD
IF(R4.EQ.0)R4=15
GO TO 110
1278 RD=5
C ACCENT
1478 REREAD 1,J,J,J,R2,RJQ
GO TO 1378
1578 RD=7
C STACC.
GO TO 1478
1678 RD=13
C HARMONIC
IF(I2.EQ.IW)RD=21
C HEAVY WEDGE
GO TO 1178
1778 RD=4
C WEDGE
GO TO 1178
3442 REREAD 885,JA,R2,RJQ
R5=26
J=9
IF(R4.EQ.0)R4=12
C FERMATA
GO TO 110
2442 IF(I2.EQ.II)GO TO 502
IF(X22.NE.0)GO TO 59
R5=51
C F=51 FF=52 FFF=53, FE=FERMATA, FILE
IF(I2.EQ.IBLA)GO TO 442
IF(I2.EQ.LEE)GO TO 3442
RD=53
IF(I3.NE.IBLA)GO TO 3123
RD=52
1442 REREAD 885,JA,R2,RJQ
R5=RD
442 J=3
IF(R4.EQ.0)R4=-5
C ABOVE IS FOR DIRECT TYPING OF P,PP,PPP,MP,RIT., ETC.
C IF PARAM 4 IS 0, PUTS IT -5 BELOW.
110 JA=J
IF(JA.GT.0)SAVER=SAVER-1
IF(SAVER.AND.CHNG)CALL SAVIT
C SAVES EVERY 5TH TIME AROUND (IF NO HANGING CHANGES IN DATA)
IF(X22.NE.0)GO TO 6531
IOLD=0
C RESET FLAG FOR "I" COMMAND
IF(JA.EQ.0)GO TO 5505
C CATCHES ZEROS
GO TO 6531
C NEXT FOR ALPHA TEXT ITEMS. 'T'=TYPE
288 IF(I2.NE.LEE)GO TO 388
RD=9
C TENUTO
GO TO 1178
388 IF(I2.NE.LEL)GO TO 488
J3=R3
J4=R4
C 'TL' SET LOCATION OF TYPE OUT ON SCREEN
IF(J4.EQ.0)J4=J3-200
C OMIT 2ND NUM. AND GET N AND N-200.
IF(R3.NE.0)GO TO 588
IF(R4.NE.0)GO TO 588
J4=0
J3=450
C 'TL' 0 0 PUTS IT BACK TO ORIG. LOC.
588 CALL TYPLOC(J3,J4)
GO TO 5505
488 JA=16
C 'T' = TEST INPUT
J2=R2
M=I
CALL WORDS
SAVER=SAVER-1
IOLD=0
GO TO 8852
188 IF(X22.NE.0)GO TO 5505
JA=140
RMODE2=R3
C TYPE 'IN STF# MODE' ETC. -- SAME AS 140 STF#.
88 SCORE=0
IF(JA.NE.140)GO TO 889
C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
SAVER=-1
RSTF=R2
IF(R3)R3=0
DO 1889 K=1,ITEM
J=PWDS(K)
IF(RN(J+1).NE.8)GO TO 1889
IF(RN(J+2).EQ.R2)GO TO 890
1889 CONTINUE
C DIDN'T FIND THIS STAFF
M=LIMIT
C ↑↑ WAS =2000 6/78
IGO=0
JA=8
R3=0
GO TO 6531
890 JA=140
ITCHK=ITEM
ICHK=I
IDPY=ST2
C ALL THIS FOR BACKUPS
889 SPD=ST2
JIT=ITEM
ISC=I
REND=0
C RETAINS ORIGINS OF SCORE SQUENCE
9532 IF(REND.EQ.2)GO TO 889
C FOR READIN CONTINUATION.
M=ISC
9533 IF(JA.EQ.8)GO TO 890
IF(REND)GO TO 9535
C REND=0 GO, -1=NORMAL END, 1=ABORTED.
CALL SCMSS
IOLD=0
IF(REND.EQ.1)GO TO 9535
IF(REND.NE.99)GO TO 9534
I=ICHK
ITEM=ITCHK
ST2=IDPY
CALL ACCPOG(1)
CALL DPYOUT(1)
CC CALL DPYDO(1)
GO TO 9535
9534 ITEM=JIT
J=M
9536 ITEM=ITEM+1
PWDS(ITEM)=J
J=J+RN(J)+3
IF(J.LT.I)GO TO 9536
IF(IBEAM)GO TO 9537
R13=0
R2=RSTF
JA=190
J3=0
CALL HOMER
9537 ITEM=JIT
ST2=SPD
GO TO 8852
9535 SCORE=-1
CALL SHRINK(JIT)
C GETS RID OF ZEROS AT END OF NOTE PARAM LIST.
IGO=-1
JA=16
C FOR TRAP AT 'EDIT'
GO TO 5505
112 IGO=1
CALL GRED
JFONT=0
IF(JA.EQ.98)GO TO 5533
KNT=0
SCORE=0
653 KNT=KNT+1
C NUM OF ITEMS IN LIST
R11=0
R10=0
R9=0
JA=R(1,KNT)
R2=R(2,KNT)
IF(JA.NE.0)GO TO 550
C =0 MEANS NO MORE ITEMS.
CALL DPYOUT(1)
CC CALL DPYDO(1)
GO TO 1100
5533 X22=0
IGO=-1
CALL DPYNEW
GO TO 55
550 DO 7531 K=1,6
7531 RJQ(K)=R(K+2,KNT)
6531 M=1
EDQ=-1
IF(JA.EQ.222)GO TO 72
IF(JA.EQ.2222)GO TO 73
DO 5532 K=1,20
5532 JQ(K)=RJQ(K)
C X22= ITEM# WHEN EDITING OR DELETING.
IF(X22.NE.0)GO TO 5511
IF(JA.GT.0)GO TO 155
IF(R2.EQ.0)GO TO 5505
C FOR UP, DOWN, LEFT, RIGHT
RJJ2=J2
GO TO 6221
C GOES BACK IF NEGATIVE AND NOT IN EDIT MODE.
155 IF(JA.EQ.223)GO TO 42
IF(JA.EQ.44)GO TO 44
C THIS '44' IS SET IN 'EDIT' - IT'S NEVER TYPED.
IF(JA.EQ.55)GO TO 554
IF(JA.NE.190)GO TO 60
271 CALL HOMER
GO TO 8853
33 IF(X22.EQ.0)GO TO 6333
C WHEN NOT IN EDIT MODE(X22=0) "P n n2" LISTS ALL PARAMS FOR ITEMS n→n2.
J2=R2
TYPE 331,J2,RJJ(J2-2)
C TYPE P n TO SEE FULL CONTENTS OF PARAM. n.
GO TO 5505
331 FORMAT(I,F15.5)
24 IF(X22.NE.0)GO TO 59
C 'Z' = ZOOM CAN'T DO ZOOM WHILE IN EDIT MODE
JA=24
IGO=0
23 IF(R2.LT.200)GO TO 123
R3=AMOD(R2,100.)
R2=(R2-R3)/100.
R4=R2*6-R2
C TYPE 24 200.5 FOR 1ST HALF OF DOUBLE, 301 FOR LAST THIRD OF TRIPLE, ETC.
123 IF(I2.GT.0)GO TO 2410
CC IF(R3.EQ.0)GO TO 2410
C NEXT SECTION FOR ZLn, ZRn, ZUn, ZDn. n=% OF SCREEN CHANGE OF CENTER POINT.
REREAD 885,R3,R3
C FOR SOME REASON ONLY 'ZD' NEEDS THIS REREAD?!?!?!? FORMAT(A2,21F)
IF(R3.EQ.0)R3=RZZZ
RZZZ=R3
C SAVE R3 FOR REPEAT OF COMMAND WITHOUT n.
R3=R3/RZMSZ
C 'ZR10' MEANS MOVE CENTER OF IMAGE 10% OF SCREEN SIZE TO RIGHT.
IF(I2.NE.IR)GO TO 1230
R3=-R3
1231 R3=RZMX+R3
R4=RZMY
1232 R2=RZMSZ
GO TO 1245
1230 IF(I2.EQ.IL)GO TO 1231
IF(I2.NE.IU)GO TO 1233
R3=-R3
1234 R4=RZMY+R3
R3=RZMX
GO TO 1232
1233 IF(I2.EQ.ID)GO TO 1234
2410 IF(R2.NE.0)GO TO 241
IF(I2.EQ.LZZ)GO TO 245
IGO=-1
243 R2=1.
C TO REDISPLAY WITH MAGNIFICATION - OR JUST RUN THROUGH DATA.
241 IF(R2.LE.1)GO TO 1245
IF(R3.NE.0)GO TO 1245
245 CALL ZCRSOR
C 'Zn' (AND NO OTHER NUM) WHERE n >1 ALLOWS YOU SET CENTER WITH LIGHTPEN.
1245 RSZ=.845*R2
RZMSZ=R2
RZMX=R3
RZMY=R4
C REMEMBER FACTORS
JCEN=0
KCEN=0
IF(R2.EQ.1)GO TO 3312
IF(R2.LT.1)GO TO 240
JCEN=(R3*10-500)*RSZ
KCEN=(R4*10-480)*RSZ
C NEXT TO RECONSTITUTE SPACING SCALE.
CC IF(R2.GT.1)GO TO 240
CC JCEN=0
CC KCEN=0
CC IF(R2.EQ.1)GO TO 3312
240 R2=(R4-100.)/100.
C%%%%%%%%%%%%%
IF(R2.LT.0)R2=0
C WE DON'T WORRY IF IT'S TOO HIGH (YET).
3312 R4=0
R2=R2+1
CALL SCL
R2=0
R3=0
R4=0
LCEN=0
MCEN=0
C IF P5 ≠ 0 GOES THROUGH DATA IN OLD WAY.
JFONT=0
85 M=1
I=PWDS(ITEM+1)
ITEMX=ITEM
C FOR USE IN CENTERING WHOLE RESTS (IN NOTWRT [NTSM.FAI])
ITEM=0
8552 ST2=3
8852 PLT=1
EDQ=0
CALL ACCPOG(1)
IF(JA.EQ.0)GO TO 6120
IF(JA.NE.24)IGO=0
GO TO 6120
6333 IF(I2.EQ.IR)GO TO 6334
C NOW TYPE 'PR' TO PRINT PARAMETER LIST
R5=42
IF(I2.EQ.IBLA)GO TO 442
IF(I2.EQ.IP)RD=41
C PPP=40 PP=41 P=42 POCO=72 PIU=91
IF(I2.EQ.II)RD=91
IF(I2.EQ.LOH)RD=72
IF(I2.EQ.LEL)GO TO 1078
C PLUS
IF(I2.EQ.IZ)GO TO 7078
C PIZZ
IF(I3.EQ.IBLA)GO TO 1442
RD=40
GO TO 3123
6334 CALL LISTP(LST)
GO TO 5505
7078 RA=51857895.
RB=95389999.
C PIZZ.
7578 RD=0
7978 RE=1
7878 J=16
REREAD 885,JA,R2,RJQ
R6=RA
R7=RB
R8=RD
IF(R5.EQ.0)R5= RE
IF(R4.EQ.0)R4=14
C 0=PUT IT ABOVE STAFF
GO TO 110
7178 RA=51704789.
RB=74828584.
RD=99999999.
C A TEMPO
GO TO 7978
7278 RA=51708772.
RB=84999999.
C ARCO
GO TO 7578
7378 RA=40999999.
7678 RB=0
GO TO 7578
C LEFT AND RIGHT PARENTHESES AND COMMA
7478 RA=41999999.
GO TO 7678
7778 RA=36999999.
RB=0
RD=0
RE=1.5
C COMMA IS DEFAULT SIZE 1.5
GO TO 7878
172 CALL JUGGLE
CALL CLRCUR
CALL DPYNEW
CHNG=0
C RESET CHANGE FLAG - CLEAR EDIT MODE ERROR TRAP
IF(JA.EQ.223)GO TO 424
C FOR MOVING DIRECTLY TO NEW ITEM IN EDIT MODE.
IF(ZERO)GO TO 55
X22=ZERO
ZERO=-1
IF(JA.EQ.55)GO TO 554
IF(JA.EQ.44)GO TO 44
IF(KED.NE.0)GO TO 244
GO TO 425
C 55,POS -- SETS UP ALIGNMENT
554 IF(I2.NE.IS)GO TO 2554
CALL EXCH(R2,R3)
J3=R3
C 'ES' IS "EDIT, STAFF, POS., CODE"
C 'ED' IS "EDIT, POS., STAFF, CODE"
2554 CALL BOX(-1,R2)
IF(J4.EQ.0)KED=-1
RITEM=R4
C FOR 'ED POS., STF., CODE#' (STF > 7 = ALL STAVES)
IF(J3.GT.7)KED=-2
RLINE=R2
R2=R3
GO TO 45
C '223,0' EDITS LAST ITEM ENTERED
42 REDIT=999.0
IF(R2.NE.0)GO TO 242
X22=ITEM
IF(IOLD.EQ.0)GO TO 429
IF(IOLD.LE.ITEM)X22=IOLD
GO TO 429
44 KED=1
RITEM=R3
C 'ST*, STF#, CODE# (IF 0, ALL ITEMS COME UP) - STF>7 = ALL STAVES.
IF(R2.GT.7)KED=2
45 REDIT=R2
C THE STAFF #
JED=1
244 IF(EDX(RLINE).GE.0)GO TO 73
CC244 X=ITEM
CC IF(JED.GT.X)GO TO 444
CC DO 144 K=JED,X
CC L=PWDS(K)
CC IF(KED.EQ.-2)GO TO 654
C -2 LOOKS AT ALL ITEMS NEAR VERT. LINE, -1 ON SINGLE STAFF.
CC IF(KED.EQ.2)GO TO 656
CC IF(RN(L+2).NE.REDIT)GO TO 144
CC IF(KED)GO TO 654
CC IF(RITEM.EQ.0)GO TO 655
CC656 IF(RITEM.NE.RN(L+1))GO TO 144
CC655 IF(JA.NE.55)GO TO 344
CC654 IF(ABS(RLINE-RN(L+3)).LT.5.0)GO TO 344
CC144 CONTINUE
CC444 REDIT=999.
C NO MORE ON LINE
CC R2=0
C SO IT WILL RETURN IF NOTHING IS FOUND WITH 'ED' OR 'ST'.
CC GO TO 73
CC344 JED=K+1
C FOR NEXT TIME AROUND
CC X22=K
GO TO 429
C CR MOVES ALONG GIVEN LINE, 222 LEAVES THIS MODE
91 CALL ACCPOG(1)
IF(I.EQ.IX)ITEM=ITEM-1
GO TO 142
242 IF(X22.GT.0)GO TO 5511
142 IF(R2.NE.0)GO TO 424
IF(REDIT.EQ.999)GO TO 1554
IF(JA.GE.0)GO TO 244
1554 X22=X22+1
IF(JA)X22=X22-1+JA
IF(X22.LT.1)X22=1
GO TO 425
CCC427 FORMAT(1XA5/,2F6.0,F10.2,$)
CC1427 FORMAT(/,2F6.0,F10.2,$)
CCC4271 FORMAT('+ (',I2,')',F7.2,$)
C FOR EDITING
5511 IF(JA.EQ.55)GO TO 420
220 IF(JA.NE.223)GO TO 720
C 'I, #' WILL MOVE TO ANOTHER ITEM WHEN ALREADY IN EDIT MODE.
KED=0
JED=0
GO TO 72
720 IF(JA.EQ.44)GO TO 420
C FOR '24' WHILE IN EDIT MODE. MAGS WITH CURSOR AS CENTER.
IF(JA.GT.100)GO TO 4221
IF(JA.GT.13)GO TO 5505
C PARAM NUM TOO HIGH? LOOKS FOR NEXT ITEM TO EDIT IF <CR>
4221 IF(X22.EQ.0)GO TO 5517
IF(R2.NE.0)GO TO 5517
C BACKS UP WHEN IN EDIT MODE.
IF(JA.GT.0)GO TO 5518
IF(I.EQ.IX)GO TO 91
IF(CHNG.NE.0.AND.JA.LT.0)GO TO 5505
C CAN'T DO '-N' AND OTHER THINGS AFTER CHANGES IN EDIT MODE.
ZERO=X22+1
C '0' AFTER AN EDIT ENDS THE EDIT AND GETS NEXT ITEM FOR EDIT.
72 IF(X22.EQ.0)GO TO 55
IF(KED.EQ.0)REDIT=999.
320 IF(I.NE.IX)GO TO 172
ITEM=ITEM-1
C TO DELETE AN ITEM
73 X22=0
CHNG=0
C RESET CHANGE FLAG
CALL CLRCUR
CALL DPYNEW
IF(REDIT.EQ.999.)GO TO 428
IF(JA.EQ.55)GO TO 554
IF(JA.EQ.44)GO TO 44
428 IF(R2.EQ.0.OR.R2.GT.ITEM)GO TO 55
C DELETION IN EDIT MODE DOES NOT LEAVE MODE.
424 X22=R2
425 IF(X22.GT.ITEM)GO TO 73
C LEAVES EDIT MODE.
429 CALL BOXX
CC429 IX=I
CC MEDIT=PWDS(X22)
CC J=2
CC426 Y=RN(MEDIT)+J
CC CALL LOOP(0,Y,1,I,MEDIT,RN)
CC JJA=RN(I+1)
CC YED=Y-2
CC L=I+2
CC DO 422 K=1,11
CC IF(K.GT.YED)GO TO 423
CC RJJ(K)=RN(L+K)
CC GO TO 422
CC423 RJJ(K)=0
CC422 CONTINUE
CC RJJ2=RN(L)
CC IF(IGO.GT.0)GO TO 4231
C NO BOX WHEN IN GROUP EDIT ROUTINE
CC IBOX=I
CC RBOX=RJJ2
CC CALL BOX(IBOX,RBOX)
CC4231 ITEM=ITEM+1
CC ST2=WDS(ITEM)
GO TO 55
5517 IF(JA.EQ.0)GO TO 6221
5518 X=100-JA
IF(X)JA=JA/100
IF(JA.LE.2)GO TO 7221
CALL EQUAL(X)
CC IF(JA.LE.13)GO TO 324
CC JA=JA/10
C ADD 1000 TO PARAM TO MAKE EQUAL TO ANOTHER PARAM
CC X=R2-2.
CC RJJ(JA-2)=RJJ(X)
CC GO TO 6222
CC324 I1=JA-2
CC IF(X)GO TO 224
CC RJJ(I1)=R2
CC GO TO 6222
CC224 RJJ(I1)=RJJ(I1)+R2
GO TO 6222
178 IF(X22.EQ.0)GO TO 7555
C 'C' = COPY (IN OR OUT OF EDIT MODE) CR=CRESC.
CC IF(I2.EQ.IBLA)GO TO 883
IF(I2.NE.IBLA)GO TO 176
177 IF(CHNG.EQ.0)GO TO 5505
C CAN'T 'COPY' UNLESS CHANGES WERE MADE.
IOLD=0
GO TO 883
176 IF(R2.NE.0)GO TO 177
C IS THERE A NUMBER AFTER C
R2=1
C CN=CENTER, CH=AT HEAD, CT=AT TAIL, CX=EXIT FROM CENTERING MODE.
JA=13
IF(I2.EQ.IXX)R2=0
IF(I2.EQ.LHH)R2=-R2
IF(I2.EQ.IT)R2=-2
IF(I2.EQ.LBB)CB=6
IF(I2.EQ.LVV)CB=-1
C TYPE 'CB' FOR CENTER-BIG (BIG RANGE =6) ****** 'CV'=SET CURVE OF SLUR.
GO TO 6531
CC278 IF(X22.NE.0)GO TO 59
7555 IF(I2.EQ.IBLA)GO TO 7556
C NEXT FOR ME=MENO=81 MOLTO=90 CRESC.=70 MP=43 MF=50
RD=43
IF(I2.EQ.LFF)RD=50
IF(I2.EQ.LOH)RD=90
IF(I2.EQ.LEE)RD=81
IF(I2.EQ.IR)RD=70
GO TO 1442
7556 CALL MOVER
IF(R2.EQ.99)GO TO 59
C 99=BACKUP OUT OF MOVER ETC.
IGO=0
JFONT=0
C SO IT WON'T DO ALL FONT LOOKUPS.
8853 IF(JJ2)GO TO 5505
M=PWDS(JJ2)
I=PWDS(ITEM+1)
ITEM=JJ2-1
ST2=WDS(JJ2)
C SO IT DOESN'T HAVE TO GO THROUGH ALL ITEMS
GO TO 8852
420 REDIT=0
IF(I2.NE.IBLA)GO TO 320
C WE GET HERE WHEN TYPING 'ST' OR 'ED' WHEN ALREADY IN EDIT MODE.
IF(R2.EQ.0)GO TO 211
IF(CHNG.NE.0)GO TO 5505
C CATCH 'S'ET AFTER A CHANGE WAS MADE.
GO TO 320
C GO PAST HERE ONLY FOR 'A'LIGN
211 IF(KED.GE.0)RLINE=RJ3
RJ3=RLINE
GO TO 6222
C FOR '55' ALIGNING
7221 IF(X)GO TO 4223
CALL PARCH(JA,JJA,R2)
GO TO 6222
4223 RJJ2=R2+RJJ2
C ARRAYS NEED 2O LOCATIONS HERE.
C CHNG PARAMS WITH PAIRS OF NUMS.(EG. 2,122 4,13 5,-2 ETC.)
6222 CALL RJED
6221 CALL RJED2
C BELOW IS NOW IN 'LOOP.FAI'
CC6222 DO 1222 K=1,20,2
CC L=JQ(K)
CC IF(L.EQ.0)GO TO 6221
C '600 2' WILL ADD 2 TO PARAM 6. '3000 6' SETS P3=P6.
CC RD=RJQ(K+1)
CC X=L
CC IF(L.LT.100)GO TO 223
CC IF(L.LT.2000)GO TO 5223
CC X=L/1000
CC L=JQ(K+1)-2
CC RD=RJJ(L)
CC GO TO 2223
CC5223 X=L/100
CC IF(X.EQ.2)GO TO 1223
CC RD=RJJ(X-2)+RD
CC GO TO 2223
CC1223 RD=RJJ2+RD
CC223 IF(X.LE.2)GO TO 3223
CC2223 RJJ(X-2)=RD
CC GO TO 1222
CC3223 CALL PARCH(X,JJA,RD)
C NOW P1 CAN BE CHANGED IN EDIT MODE -- BE CAREFUL,,,,!!!!!!
CC1222 CONTINUE
C*** LOOP SET TO 11 (20 IN ARRAY!) ONLY 13 PARAMS POSSIBLE NOW.
CC6221 DO 5514 K=1,11
CC R2=RJJ(K)
CC RJQ(K)=R2
CC5514 JQ(K)=R2
CC R2=RJJ2
CC JA=JJA
CC ITEM=ITEM-1
CC IF(ITEM)ITEM=0
ST2=WDS(ITEM+1)
I=PWDS(ITEM+1)
IF(X22.NE.0)CHNG=-1
C SET CHANGE FLAG TO TRAP EDIT MODE ERRORS. (CLEARED AT 172)
CALL DPYNEW
60 J2=R2
IF(J2.LT.0)GO TO 5505
IF(J2.GT.7)GO TO 5505
C STOPS TYPO ERROR ON STAFF NUM. (<0, >7)
RSTJ2=RSTFAC(J2)
C* IF(JA.NE.2)GO TO 163
C* IF(R8.EQ.0)GO TO 163
C* IF(R8.EQ.-1)GO TO 163
C* IF(R8.EQ.-4)GO TO 163
C R8=0=AS IS; -1=WHOLE REST; >0=NUMBER OVER REST; -2=CENTERED
C R8=-3 = CENTERED REST (BUT NOT CHANGED TO WHOLE)
C R8=-4 = MEASURE REPEAT SIGN. =-5 = REPEAT SIGN CENTERED.
C* K=ITEM
C ITEM+1 IS CURRENT ITEM IN QUICK RUN-THROUGHS.
C* IF(X22.NE.0)K=X22-1
C* RD=1.75*RSTJ2
C* L=PWDS(K+2)
C* IF(RN(L+1).NE.4)GO TO 164
C GO ON IF NEXT ISN'T BAR LINE (CODE 4. NEXT FINDS OTHER LINES!!)
C* IF(RN(L+2).NE.R2)GO TO 164
C* RB=RN(L+3)
C* L=PWDS(K)
C CHECK PREV. AND NEXT ITEM. IF NOT BAR, DON'T TRY TO CENTER!
C* IF(RN(L+1).NE.4)GO TO 164
C* IF(RN(L+2).NE.R2)GO TO 164
C JUMP IF NOT ON SAME STAFF
C* RA=RN(L+3)
C* R3=RA+(RB-RA)/2-1.75*RSTJ2
C*164 IF(PLT.EQ.0)GO TO 160
C* RN(PWDS(K+1)+3)=R3
C ******* A DANGEROUS PLACE. KEEP TRACK OF THIS
C* GO TO 5541
163 IF(JA.EQ.16)GO TO 63
IF(PLT.NE.0)GO TO 5541
IF(JA.NE.2)GO TO 1170
IF(R8.NE.0)GO TO 160
IF(R9.NE.0)R9=0
GO TO 160
1170 IF(JA.NE.8)GO TO 70
IF(R9.NE.1)GO TO 160
L=7
K='INST.'
C RJQ(7) IS R9
71 RA=RN(MEDIT+L+2)
CALL TYPCHR(RA,5)
CCCC TYPE 427,RA
CALL TYPCRLF
CALL TYPSTR('TYPE ')
CALL TYPCHR(K,5)
CALL TYPSTR(' NAME ')
CCC721 FORMAT(' TYPE ',A5,' NAME '$)
CCC TYPE 721,K
READ(IDEV,FA5)RD
CALL LO2UP(RD)
RJQ(L)=RD
IF(RD.NE.' ')GO TO 160
IF(RN(MEDIT).LT.L)RA=0
C RESTORES NAME IF THERE WAS ONE ALREADY. ELSE=0
RJQ(L)=RA
C WHEN P9=1 ASKS FOR ID NAME FOR THE STAFF (FOR PART EXTRACTOR)
GO TO 160
CF371 FORMAT(A5,A1,A3)
70 IF(JA.NE.11)GO TO 160
C ↑↑↑↑ WAS - TO 63
IF(J10.NE.1)GO TO 160
K='FILE'
L=8
C P10←1 GETS NAME OF BASIC DRAW FILE, PUTS IT IN P10 (NJR)
GO TO 71
C IF NO NAME ASKED FOR, IT TAKES LAST NAME GIVEN.(SOLVES SORT PROB?)
63 RD=R5
IF(RD.GE.100)RD=RD-100
C ADD 100 TO SZ TO MAKE TEXT APPEAR IN ALL SEPARATE PARTS OF ORCH. SCORE.
IF(J10.EQ.0)GO TO 162
L=ITEM
IF(X22.NE.0)L=X22-1
IF(J10.EQ.1)GO TO 263
C ↓↓↓↓ TEMP. FIX TO CNVT TEXT FORMAT TO NEW STYLE. "10 99"
IF(J10.NE.99)GO TO 863
X=PWDS(X22)+6
DO 563 L=X,X+2
RB=RN(L)
K=RB
C CHECKS TO SEE WHICH FORMAT
563 IF(K.NE.RB)GO TO 663
GO TO 57
663 DO 763 L=X,X+2
763 RN(L)=RN(L)*100.
GO TO 57
C NEXT FOR CENTERING TEXT. P10>1
863 RB=0
X=PWDS(L+1)
363 L=L+1
K=PWDS(L)
RB=RB+RN(K+9)
C ADD SPACE NEEDED
K=PWDS(L+1)
IF(RN(K+1).NE.16)GO TO 463
IF(RN(K).EQ.8)GO TO 363
C GO BACK IF MORE LETTERS TO COME
463 R3=R10-(RB-3.4)*RD*RSTJ2/2.
C +3.4 IS TO COMPENSATE FOR STARTING POS. BEING IN CENTER OF LET.
R10=0
IF(RN(X).EQ.8)RN(X+10)=0
RN(X+3)=R3
C THESE ARE NEEDED FOR ITEMS CENTERED DIRECTLY FROM 'WORDS'
GO TO 162
263 K=PWDS(L)
R3=AMOD(RN(K+5),100.)*RSTJ2*RN(K+9)+RN(K+3)
C AMOD BECAUSE P5+100 IS USED FOR PARTS PROGRAM.
R4=RN(K+4)
R5=RN(K+5)
R2=RN(K+2)
J2=R2
L=PWDS(L+1)
DO 361 JJA=3,5
361 RN(L+JJA)=RJQ(JJA-2)
RN(L+2)=R2
162 IF(PLT.NE.0)GO TO 5541
160 RJ3=R3
JJA=JA
IF(R8.NE.0)GO TO 161
IF(JA.EQ.1)R8=999.
C 999=0 FOR STEM EXTENSIONS.
C USES ONLY 10 PARAMETERS BEYOND JA, J2
161 CALL MSSLUP
IF(JA.NE.6)GO TO 1261
CX I DON'T THINK THIS NEXT IS NEEDED NOW. 9/78 IF(J13.EQ.0)GO TO 171
CX R2=X22
CX X22=0
CX R3=R13
CX J3=J13
CX R4=R11
C RESET HOMING RANGE (DEFAULT=3) WITH P11.
CX CALL CLRCUR
CX R13=0
C TYPE 13, n WITH BEAMS TO ADJUST IN RE. TO OTHER STAFF(LIKE OLD 'AD')
CX JA=190
CX GO TO 271
171 CALL HOMER
1261 IF(R13.EQ.0)GO TO 261
RD=R11
IF(CB.EQ.0)GO TO 2261
C *** CB = CENTER-BIG I.E. BIG RANGE FOR CENTERING -- 6 UNITS. (CAN VARY LATER??)
IF(RD.EQ.0)R11=CB
IF(JA.NE.5.OR.CB.GT.0)GO TO 2261
C *** CV = SET CURVE OF SLUR. (FOR USE AFTER SPACE CHANGES, ETC.)
R7=RCURVE(R3)
CC R7=0.9+(R6-R3)/25.+ABS(R4-R5)/10.
C SAME FORMULA AS FOUND IN SLURZ ROUTINE. FUNCTION CURVE IS IN LOOP
CC IF(R7)RB=-RB
CC DONE IN 'RCURVE'*** R7=RB
RJ7=R7
GO TO 3261
2261 CALL HOMER
3261 CB=0
R11=RD
C R11 GETS CHANGED IN 'HOMER'
CC IF(JA.EQ.2.AND.R9.NE.0)CALL RSTCEN
C RSTCEN IS FOR CENTERING WHOLE RESTS.
IF(JA.EQ.10)R3=R3+RSTJ2
IF(JA.NE.9)GO TO 261
IF(J5.GT.3)GO TO 261
CALL NOZERO(R6)
R3=R3+RSTJ2+2.*RSTJ2*R6
C ABOVE HELPS CENTER NUMBERS UNDER NOTES(BECAUSE R3 IS AT CENTR OF NUM)
C IF P13≠0 ANY ITEM WILL LINE UP WITH ANY OTHER ITEM. P13 IS RESET=0
C P13=-1 POSITIONS ITEM ABOVE OR BELOW NOTE, =-2 JUST BEYOND STEM.
C CODE 10 (NUMBERS) SPACED TO LEFT AS WELL AS CODE 9, P5=1,2,3 (FLAT,SHRP,NAT)
C **** FOR '0' EDITS ******
261 CALL LUP2
5541 IF(DP(J2).GE.0)GO TO 61
IF(JA.NE.8)GO TO 57
C NOW GET SIZE FACTOR, IF IT'S THERE. (NEEDED IN 'SCORE' SECTION.)
IF(R5.NE.0)RSTFAC(J2)=R5
GO TO 57
C*** 3/74 NEW DP SYSTEM
C WHAT ABOUT EDITS?*******
61 POS=STFF(J2)
RX3=R3
C SAVES IT IN RJQ(20) FOR OTHER ROUTINES.
J3=ROFF(RHORZ(R3))
C LINE IS DIVIDED INTO 200 POINTS.
CALL CENTX
C SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
R3=J3
IF(JA.LE.2)GO TO 11
551 GO TO(1,1,68,25,67, 625,116,125,11,69, 68,12),JA
GO TO (116,81,80),JA-15
C FOR 16,17,18 (WORDS, KSIG, METER)
IF(JA.EQ.99)GO TO 57
C FOR PART EXTRACTOR TRANSPOSER - KEY SIG=0
IF(JA.NE.33.AND.JA.NE.44)GO TO 222
JA=JA/11
C THIS IS TEMPORARY - TO READ PAGE TEMP. FILES.
GO TO 551
222 I=PWDS(ITEM+1)
GO TO 5505
C 44 1; JFONT=ONE DISPLAYS FONTS - THIS ALSO CATCHES SOME TYPOS
69 CALL MAKNUM(R5)
GO TO 57
68 CALL CLEFS
GO TO 57
67 CALL SLUR
GO TO 57
116 CALL ALPHA
GO TO 57
81 CALL KSIG
GO TO 57
80 CALL METER
GO TO 57
125 IF(R2.EQ.0)RMOV=R8
CALL STAFF
GO TO 57
CC625 IF(J10.LT.100)GO TO 1625
CC CALL BEAMX
CC GO TO 160
625 CALL BEAMX
CC625 CALL BMSTF
GO TO 57
C BEAMS, STAFF LINES ****
12 CALL CIRCLE
GO TO 57
25 CALL ITMSUB
C BAR LINES, ETC.
GO TO 57
C TO GET DISPLAY: 'G'; 'GM' ADDS TO DPY;
CC120 IF(X22.NE.0)GO TO 59
C GO BACK IF STILL IN EDIT MODE
120 J2=0
IF(I.EQ.1)GO TO 1220
L=NAME
X=EXT
IF(I2.EQ.IBLA)GO TO 222
J2=-1
I2=(I2-'0')/536870912
C TURN ASCII INTO INTEGER.
IF(I2.GT.9.OR.I2.LT.0)GO TO 1220
C VERT. STEPS PER INCH = 23.9 (CONSIDER STAFF SIZE FACTOR TOO)
R2=I2
J2=1
C 'GM'=GET MORE(BUT OLD OUTPUT NAME IS RESTORED AT 2207)
C 'Gn'=GET MORE AND PUT IT ON STAFF n AT POS. OF STAFF 0'S P8.
C ANYTHING AFTER 'G' BUT A NUMBER IS TAKEN AS 'GM'.
CCCC IF(I2.NE.IM)GO TO 222
CCCC J2=-1
1220 I1=-1
CALL NAMEXT(INP,NAME,EXT)
C NOW TYPE 'G NAME' OR 'GM NAME'
IF(NAME.NE.IBLA)GO TO 1221
1225 CALL TYPSTR(' NAME.EXT? ')
CCC1225 TYPE 21
READ(IDEV,89,END=3502)INP
CQQ ACCEPT 89,INP
C GO PUT A1'S INTO A5, ETC.
CALL NAMEXT(INP,NAME,EXT)
IF(NAME.EQ.IBLA)GO TO 2220
IF(NAME.NE.'99')GO TO 1221
C TYPE '99' TO BACK OUT OF 'SAVE'.
NAME=L
EXT=X
GO TO 5505
1221 IF(I1.NE.LESS)GO TO 1226
IDEV=5
GO TO 1225
1226 IF(LOOKX(NAME,EXT).EQ.0)GO TO 1225
C FUNC. LOOKD IS 'FAIL' PROG. TO CHECK ON LOOKUPS
2220 JA=-1
C -1 IS FOR 8852+3
2200 J=ITEM+1
IF(NAME.NE.IBLA)GO TO 2207
CALL GETEXT('TMP','DMD')
GO TO 2205
2207 CALL GETEXT(NAME,EXT)
2205 IF(J2.EQ.0)GO TO 2202
NAME=L
EXT=X
C ABOVE GETS BACK ORIGINAL NAME WITH 'GM' AND 'Gn'
2202 CALL EXTIN(RSTFAC,128)
CALL EXTIN(PWDS(J),JJ2)
CALL EXTIN(RN(I),IPOS)
ITEM=ITEM+JJ2-2
CCCC IF(J2)GO TO 2203
IF(J2)2203,3202,4202
CC IF(I2.EQ.IM)GO TO 2203
C J2=-1,1=GM *******'GET MORE' DOES NOT GET MOTIVE LIST OF NEW FILE.*******
3202 IF(LCNT.GT.1)CALL EXTIN(LIST,LCNT)
I=IPOS
IF(RSTF.EQ.0)GO TO 85
C (END OF V ARRAY)RSTF=-1 MEANS READ THE DPY BUFFER
CALL EXTIN(ST,4302)
CALL DPYNEW
GO TO 5505
4202 DO 5202 K=1,ITEM
IF(RN(PWDS(K)+1).NE.8)GO TO 5202
J3=PWDS(K)
IF(RN(J3+2).NE.0)GO TO 5202
R8=RN(J3+8)
C ASSUMES SPACE INFO IS IN P8. GET IT.
C NEXT FOR VERTICAL SPACING OF NEW STAFF TO BE READ.
R5=23.9/RSTFAC(0)
R3=.73*R2
C INCHES BETWEEN STAVES=.73
R4=(R8-R3)*R5
C R4=CHANGE FROM NORMAL POSITION FOR INCOMING STAFF.
GO TO 2203
5202 CONTINUE
C IF NO STAFF 0 WAS FOUND R4=0
R4=0
2203 M=I-1
DO 2204 K=J,J+JJ2-2
PWDS(K)=PWDS(K)+M
IF(J2.LE.0)GO TO 2204
C NEXT FOR GET-MORE AND PUT ON STAFF #R2
J3=PWDS(K)
RN(J3+2)=R2
IF(RN(J3+1).NE.8)GO TO 2204
RN(J3+4)=R4
C SET HEIGHT OF STAFF - DEPENDANT UPON P8 OF STAFF 0.
CCC IF(RN(J3).GE.6)RN(J3+8)=0
C ZERO SPACING PARAM IN UPPER STAVES.
2204 CONTINUE
GO TO 85
M=IX
C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
C (J8) P8=1 OR 2 FOR 2-PASS PLOTS
C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
C RMOV HAS INCHES FROM P8 OF STAFF 0.
C R6=1 FOR NO MOVE AT END. R7=INCHES TO MOVE FOR NEW STAFF 0.
C RE. R7:DISTANCE IS MEASURED FROM BOTTOM LINE OF STANDARD POSITION
C OF STAFF 0 UP TO LOWEST!! POINT FOUND IN FOLLOWING FILE. THEN
C NEXT SHIFT IS AGAIN FROM STANDARD STF.0 TO NEXT FILE'S LOW POINT.
C MOVES PLOTTER UP IF P5=0.
C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
6120 IF(M.GE.I)GO TO 7120
IF(IGO.EQ.0)GO TO 7121
C USE "Z" TO DO FIXUP WHEN LIST IS SCRAMBLED !?X@!ZQ
IF(M.EQ.PWDS(ITEM+1))GO TO 7121
K=ITEM+1
CALL TYPSTR(' FIXING ITEM ')
CALL TYPINT(K)
CALL TYPCRLF
CCCC TYPE 7122,K
CCC7122 FORMAT(' FIXING ITEM ',I3)
PWDS(K)=M
7121 CALL RUNTHR(M)
IF(EDQ.LE.0)GO TO 60
GO TO 5505
7120 M=1
IF(PLT.EQ.1)EDQ=-1
PLT=0
GO TO 5505
C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
1 FORMAT(I,24F)
CCC56 FORMAT(/1XA5,' TYPE FOR ITEM #',I3,I,I6/)
CCC21 FORMAT(' NAME.EXT? '$)
END